Server virtualization in data centers is becoming widespread. In general, server virtualization describes a software abstraction that separates a physical resource and its use from the underlying physical machine. Most physical resources can be abstracted and provisioned as virtualized entities. Some examples of virtualized entities include the central processing unit (CPU), network input/output (I/O), and storage I/O.
Virtual machines (VMs), which are a virtualization of a physical machine and its hardware components, play a central role in virtualization. A virtual machine typically includes a virtual processor, virtual system memory, virtual storage, and various virtual devices. A single physical machine can host a plurality of virtual machines. Guest operating systems execute on the virtual machines, and function as though executing on real hardware.
A layer of software provides an interface between the virtual machines resident on a physical machine and the underlying physical hardware. Commonly referred to as a hypervisor or virtual machine monitor (VMM), this interface multiplexes access to the hardware among the virtual machines, guaranteeing to the various virtual machines safe and isolated use of the physical resources of the machine, such as the CPU, memory, storage, and network bandwidth.
Typical server virtualization implementations have the virtual machines share the physical network interface, network adapter, or network interface card (NIC) of the physical machine for performing external network I/O operations. The hypervisor typically provides a software-based virtual switched network (called a vswitch) that provides interconnectivity among the virtual machines on a single physical machine. The vswitch interfaces between the physical network interface of the physical machine and the virtual NICs (vNICs) of the virtual machines, each virtual machine having one or more associated vNICs. In general, each vNIC operates like a physical network interface, being assigned a MAC (Media Access Control) address that is typically different from that of the physical network interface. The vswitch performs the forwarding of packets to and from the various virtual machines and the physical network interface.
Software-based virtualization of the I/O, however, is time consuming and generally limits performance. Early efforts to reduce the burden on the vswitch (hence freeing up valuable CPU cycles on the hypervisor) and improve network I/O performance have produced network I/O hardware technology such as Virtual Machine Direct Queues (VMDq), which is an adaptation of the multi-queue NIC concept for virtual networking, where each queue pair (transmit and receive) is dedicated to a virtual machine. The NIC places outgoing packets from a given virtual machine into the transmit queue of that virtual machine and incoming packets addressed to the given virtual machine into its receive queue. The direct assignment of such queues to each virtual machine thus simplifies the handling of outgoing and incoming traffic, and avoids buffer copies, which engage CPU cycles.
Other industry efforts have led to new technologies being built into next generation NICs, Converged NICs (CNICs), and Converged Network Adaptors (CNAs), technologies that seek to improve the performance of switching traffic between virtual machines within a single hypervisor by bypassing the hypervisor's vswitch, such technologies including PCI SR-IOV (Peripheral Component Interconnect Single-Root I/O Virtualization) and MR-IOV (Multi-Root I/O Virtualization. For example, SR-IOV (Peripheral Component Interconnect Single-Root I/O Virtualization) technology partitions a single network interface into multiple virtual functions. Virtual machines can directly access the physical resource (i.e., the network interface) through the virtual functions without having to rely on the hypervisor for control or data operations. To bypass the vswitch in this fashion, traffic switching between VMs occurs either in the NIC or in an external switching device (e.g., a Layer-2 edge switch).
One proposed technique, called VEB (Virtual Ethernet Bridging), performs intra-hypervisor, VM-to-VM traffic switching within the physical network interface. Another proposed technique, called VEPA (Virtual Ethernet Port Aggregator), switches the intra-hypervisor VM-to-VM traffic at an edge network device, its rationale being that full switching functionality in NIC hardware would be technically challenging and expensive to implement, compared to the incremental change required to implement VEPA. Yet another proposed technique, called Port Extenders, switches such VM-to-VM traffic several network devices removed from the hypervisor, for example, at a core network switch of a hierarchical network infrastructure.